// 管理员相关接口
const express = require("express")
// 创建路由
const router = express.Router()

// 引入数据库连接池
const pool = require("../../db/db.js")

// 引入ResponseData
const resData = require("../../utils/ResponseData.js")

// 引入jwt相关方法
const { generateToken } = require("../../auth/jwt.js")

/**
 * 平台管理员登录接口
 * 请求url:"http://localhost:3000/adminLogin"
 * 请求方式:post
 * 请求参数:req.body
 * @param req:接收前端请求来的数据
 * @param res:响数据到前端
 */
router.post("/adminLogin", (req, res) => {
    console.log("进入到了petAdmin->admin_login", req.body);
    // 获取前端请求回来的数据
    console.log(req.body);
    const admin = req?.body?.d_admin || ""
    const pwd = req?.body?.d_pwd || ""
    // 编写sql语句,?是占位符,后用变量替换
    const sql = "select * from pet_admin where d_admin = ? and d_pwd = ?"
    // 执行sql语句
    // 参数1:sql语句,参数2:参数列表,元素顺序必须和sql语句中的?完全一致,参数3:回调函数,处理返回值
    pool.query(sql, [admin, pwd], (err, data) => {
        if (err) {
            throw err //有异常就抛出去
        }
        console.log(data);
        if (data.length == 0) {
            res.send(resData.error("登陆失败,管理员信息不存在", 201))
            // res.send({ code: "201", msg: "登陆失败,管理员信息不存在" })
        } else {
            // 生成token
            const token = generateToken(data[0]?.d_id, 1)
            console.log("服务器", token);
            // 后端给前端响应信息,用response.send()
            res.send(resData.success({
                id: data[0]?.d_id,
                admin: data[0]?.d_admin,
                pic: data[0]?.d_pic,
                token: "Bearer " + token
            }, "管理员登陆成功"))
            // res.send({
            //     code: "200", msg: "管理员登陆成功", data: {
            //         id: data[0]?.d_id,
            //         admin: data[0]?.d_admin,
            //         pic: data[0]?.d_pic
            //     }
            // })
        }
    })
})

module.exports = router